// ---- Pin Definitions ---- #define STEP_PIN D1 #define DIR_PIN D0 #define EN_PIN D3 #define M0_PIN D2 #define M1_PIN D4 #define M2_PIN D5 // ---- Motor Parameters ---- #define STEPS_PER_REV 200 // 1.8° motor #define MICROSTEPPING 16 // 1/16 microstep int totalSteps = STEPS_PER_REV * MICROSTEPPING; // ---- Timing ---- int stepDelay = 800; // microseconds (controls speed) void stepMotor(int steps, bool direction) { digitalWrite(DIR_PIN, direction); for (int i = 0; i < steps; i++) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(stepDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(stepDelay); } } void setup() { pinMode(STEP_PIN, OUTPUT); pinMode(DIR_PIN, OUTPUT); pinMode(EN_PIN, OUTPUT); pinMode(M0_PIN, OUTPUT); pinMode(M1_PIN, OUTPUT); pinMode(M2_PIN, OUTPUT); // ---- Enable Driver (LOW = ON) ---- digitalWrite(EN_PIN, LOW); // ---- Set Microstepping: 1/16 ---- digitalWrite(M0_PIN, HIGH); digitalWrite(M1_PIN, HIGH); digitalWrite(M2_PIN, LOW); delay(1000); } void loop() { // ---- Clockwise ---- stepMotor(totalSteps, HIGH); delay(1000); // ---- Counter-clockwise ---- stepMotor(totalSteps, LOW); delay(1000); }